#pragma once

namespace Core
{
	class Color
	{
	public:
		Color(unsigned char r, unsigned char g, unsigned char b, unsigned char a = 1)
		{
			_r = r;
			_g = g;
			_b = b;
			_a = a;
		}
		Color()
		{
			_r = 0;
			_g = 0;
			_b = 0;
			_a = 0;
		}

		unsigned char GetR() const { return _r; }
		unsigned char GetG() const { return _g; }
		unsigned char GetB() const { return _b; }
		unsigned char GetA() const { return _a; }

		bool operator==(const Color& other)
		{
			if ((_r == other.GetR()) &&
				(_g == other.GetG()) &&
				(_b == other.GetB()) &&
				(_a == other.GetA()))
			{
				return true;
			}
			return false;
		}

		bool operator!=(const Color& other)
		{
			if ((_r == other.GetR()) &&
				(_g == other.GetG()) &&
				(_b == other.GetB()) &&
				(_a == other.GetA()))
			{
				return false;
			}
			return true;
		}

		static Color Color::FromArgb(int r, int g, int b, int a)
		{
			return Color(r, g, b, a);
		}

	private:
		unsigned char _r, _g, _b, _a;
	};


	
}